当前位置:首页 » 编程软件 » linux编程文件

linux编程文件

发布时间: 2022-09-08 22:21:59

‘壹’ 在linux环境下的C编程,比如说C文件叫main.c

楼上的意思是,你拥有源码,自行编译生成了汇编文件,你当然可以查看汇编代码;
但是如果你得到的是一份二进制的文件,obj、或者其他的executable file,你没有其源码,这个时候你想分析其文件信息以及汇编源码,只有通过上述命令了 。。。这个有点像Windows下面的逆向工程(Linux下多开源,因此win下面逆向工程较多也较有意义)。

举几个例子:
objmp -x obj 以某种分类信息的形式把目标文档的数据组织(被分为几大块)输出
objmp -t obj 输出目标文档的符号表
objmp -h obj 输出目标文档的section概括
-----------------------------------------------------------------------
你应该man一下objmp的,你就知道它具体用途了。

windows下面类似的工具有微软VS中自带的mpbin.exe
mpbin xx.exe /exports >exports.txt

‘贰’ 如何在linux下用c编程实现文件的复制

打开一个读文件和一个写文件,用一个循环,fgetc每读一个字符,就用fputc写入另一个文件,这样就实现了文件的复制,和普通的c语言标准库编程是一样的,代码如下:
int c;
FILE *in, *out;

in = fopen("file.in", "r");
out = fopen("file.out", "w");

while( ( c = fgetc(in) ) != EOF)
fputc(c, out);

fclose(in);
fclose(out);

‘叁’ Linux编程,怎样用C语言创建、读、写文件呀希望各位赐教!谢谢

既然得到了这文件指针,你想怎么打开都行,无需知道以前是什么模式。
用open更新你想要的打开方式。
o_rdonly
以只读方式打开文件
o_wronly
以只写方式打开文件
o_rdwr
以可读写方式打开文件。上述三种旗标是互斥的,
也就是不可同时使用,
但可与下列的旗标利用or(|)运算符组合。
o_creat
若欲打开的文件不存在则自动建立该文件。
o_excl
如果o_creat
也被设置,
此指令会去检查文件是否存在。文件若不存在则建立该文件,
否则将导致打开文件错误。此外,
若o_creat与o_excl同时设置,
并且欲打开的文件为符号连接,
则会打开文件失败。
o_noctty
如果欲打开的文件为终端机设备时,
则不会将该终端机当成进程控制终端机。
o_trunc
若文件存在并且以可写的方式打开时,
此旗标会令文件长度清为0,
而原来存于该文件的资料也会消失。
o_append
当读写文件时会从文件尾开始移动,
也就是所写入的数据会以附加的方式加入到文件后面。
o_nonblock
以不可阻断的方式打开文件,
也就是无论有无数据读取或等待,
都会立即返回进程之中。
o_ndelay
同o_nonblock。
o_sync
以同步的方式打开文件。
o_nofollow
如果参数pathname
所指的文件为一符号连接,
则会令打开文件失败。
o_directory
如果参数pathname
所指的文件并非为一目录,
则会令打开文件失败。
这是你要的
r
打开只读文件,
该文件必须存在。
r+
打开可读写的文件,
该文件必须存在。
w
打开只写文件,
若文件存在则文件长度清为0,
即该文件内容会消失。若文件不存在则建立该文件。
w+
打开可读写文件,
若文件存在则文件长度清为零,
即该文件内容会消失。若文件不存在则建立该文件。
a
以附加的方式打开只写文件。若文件不存在,
则会建立该文件,
如果文件存在,
写入的数据会被加到文件尾,
即文件原先的内容会被保留。
a+
以附加方式打开可读写的文件。若文件不存在,
则会建立该文件,
如果文件存在,
写入的数据会被加到文件尾后,
即文件原先的内容会被保留。

‘肆’ Linux编程--文件原子操作

当多个进程同时访问一个文件的时候,普通的write/read在执行的时候,无法保证操作的原子性,可能会导致文件被污染,达不到预期的结果。

任何一个需要多个函数调用的操作都不可能是原子操作,因为在两个函数调用间,内核可能会将进程挂起执行另外的进程。

如果想要避免这种情况的话,则需要使用pread/pwrite函数

ssize_t pread(int fd ,void *buffer ,size_t size,off_t offset)
返回真正读取到的字节数,offset是指的从文件开始位置起的offset个字节数开始读。其余的参数与read无异。

PS:
pread是无法中断的原子操作,无法中断它的定位和读取操作
pread读取过后的文件偏移量不会发生改变

同理pwrite也是一样的

而在文件创建的时候也是一样的,当需要做文件创建同步的时候,我们需要在O_CREATE的时候,加上O_EXCL标志位,当已经创建过的话,会返回fd,否则返回错误

int p( int filedes):
传入一个文件描述符,返回当前可用的最小文件描述符。

int p2(int filedes,int filedes2):
传入文件描述符,以及新的文件描述符,如果新的文件描述符所指向的文件已经打开,则会强行将其关闭后,将该文件描述符指向到已存在的文件描述符。
如果filedes和filedes2指向同一个文件,则不做任何处理,直接返回filedes2,不会关闭文件

新返回回来的filedes2会共享filedes的文件状态标识,文件偏移量等等信息。因为它们的文件指针会指向文件表的同一个位置。只是fd不一样而已。

‘伍’ linux文件编程怎么删除文件中的某些

1、删除文件命令
rm
-f
文件名
将会强行删除文件,且无提示
2、删除文件夹以及文件夹中的所有文件命令:
rm
-rf
目录名字
其中:
-r:向下递归删除
-f:直接强行删除,且没有任何提示
注意:
使用rm
-rf要格外注意,linux中没有回收站,慎重操作。

‘陆’ linux shell编程中文件内容修改方法

两种思路,
第一种,你打开文件,找到匹配的行,改掉,重写个文件,删除原来的。改这个文件为一样的名字。
第二种,以需要改写的文本,把原来的文件分成两个部分,要改写的部分空出,然后重定向合并到一个文件里。
例如,
file.txt
分为
a.txt
b.txt
现在
1
a.txt>file.txt
2
变行
>>file
.txt
3
b.txt
>>file.txt

‘柒’ linux文件编程和串口编程的基本概念是什么

简单说几句吧,linux下的设备都是文件,流程也无非是open, read/write, close等当然,串口你得设置各种属性才行对不对,比如在win下的超级终端就设置了波特率啊,停止位啊,奇偶校验啊什么的,这些属性都通过 int tcgetattr(int fd, struct termios *termios_p); int tcsetattr(int fd, int optional_actions, const struct termios *termios_p);函数来设置。完整代码吗自己去google,一把一把的,其实最重要的是设置好属性,剩下的就是read,write的问题咯。希望对你有用对了,了解终端函数的详情请在linux命令行终端获取: man termios

‘捌’ Linux下C编程头文件

你在mymin.c文件中调用printf函数
前提在你mymin.c文件头包含了其他的文件而这个文件里有包含stdio.h文件
那你在mymin.c文件里可以不包含stdio.h文件

看了下你文件的编写
还是不合规范
帮你改下:

/*ex_min.h*/

#ifndef
_ex_min_h

#define
_ex_min_h

#include<stdio.h>

int
min(int
n1,int
n2);

#endif

/*ex_min.c*/

#include
"ex_min.h"

int
min(int
n1,int
n2)

{

printf("调用min\n");

if(n1>n2)

return
n1;

else

return
n2;

}

/*mymin.c*/

#include
"ex_min.h"

int
main()

{

int
n1,n2,n3;

scanf("%d,%d",&n1,&n2);

n3=min(n1,n2);

printf("%d",n3);

}

‘玖’ 如何在linux环境下编辑一个c语言源程序并将其编译为可执行文件

打开安装好的Linux系统(ubuntu18.04)

1.安装编辑器

使用语句:sudo apt-get install vim安装vim,可以在安装前查看是否安装vim编辑器。(特别提示:在安装vim前最好将软件更新,使用指令sudo apt-get update.)之所以要加sudo的原因是这些安装和更新软件的时候需要使用管理员权限才可以进行。

2.安装gcc编译器

和安装vim类似使用sudo apt-get install gcc,安装完成后可以使用cc-v来查看编译器版本信息等。cc -v界面如下:

‘拾’ linux文件编程中的right函数当写入失败时返回值为

linux文件编程中的right函数当写入失败时返回值为-1。

在成功的时候,读取的字节数被返回(0表示文件的结束),并且文件位置被这个数字所增加。如果这个数字小于请求的字节数,那就不是一个错误;例如,这可能会发生,因为现在实际可用的字节更少可能是因为我们接近文件结束,或者因为我们从管道中读取,或者从终端读取,或者因为read()被一个信号中断了。在错误中,返回-1,并适当地设置errno。

即调用read时,若所要读取的字节数少于文件中的个数,则返回读取到的字节个数;若要读取的个数多于文件中的个数,这不算错误,也返回的是读取到的字节数;若文件为空了,所返回的值即为0;若读取失败,则返回-1。

这里说的文件位置被这个数字增加的意思是你读取一位,指向字节的文件的光标往后移动一位。



read函数实际读到的字节数少于要求读的字节数时:

读普通文件,在读到要求字节数之前就到达文件尾。当从终端设备读。

当从网络读时,网络中的缓冲机构可能造成返回值小于所要求读的字节数。某些面向记录的设备,如磁带,一次最多返回一个记录。读操作完成后,文件的当前位置将从读之前的位置加上实际读的字节数。当有错误发生时则返回 -1,错误代码存入 errno中,而文件读写位置则无法预期。


热点内容
河南电脑服务器托管云主机 发布:2025-03-24 07:10:36 浏览:470
收件服务器应该是什么 发布:2025-03-24 06:52:37 浏览:873
小黄狗编程 发布:2025-03-24 06:43:02 浏览:639
华为手机手画密码如何设置 发布:2025-03-24 06:40:20 浏览:658
读java源码 发布:2025-03-24 06:29:06 浏览:35
欧皇源码 发布:2025-03-24 06:26:18 浏览:858
为什么id密码在异地登录 发布:2025-03-24 06:17:13 浏览:46
google地图连接服务器地址 发布:2025-03-24 06:12:43 浏览:359
安卓怎么样恢复手机删除的视频 发布:2025-03-24 06:07:03 浏览:133
格式化手机usb存储器 发布:2025-03-24 05:52:33 浏览:238