linux命令与c语言的一些小应用

1.设计一个程序,要求打开文件“pass”,如果没有这个文件,新建此文件;读取系统文件“/etc/passwd”,把文件的内容都写入“pass”文件。 
2.设计一个程序,要求新建一个目录,预设权限为-r--r--r--。

3.用fork创建一个子进程,在子进程中显示子进程号和父进程号,然后显示当前目录下的文件信息。在父进程中,显示子进程号和父进程号。

4.execl函数的使用,在程序中执行命令:ls -al /etc/passwd


这些问题都是一些比较简单的对库函数的应用,当然库函数不会就这么一点的。这些是在c语言中调用linux上的一些命令的程序,第一个问题是对文件的读写操作,这是比较简单的 ,我们在平常做东西的时候都会用到,这个不多说,不懂的,下面有代码,看代码应该就能懂,第二个比较好理解,在linux上我们也经常用到的命令,mkdir的命令,主要说的是后两个,第三个是关于进程的,对于初学者,进程是什么,为什么要有进程,用俗话来说,比如我们用的QQ,要实现发送,我们要一直的发送,必须用循环,但是期间还要用到接受信息,还是一个循环,我们该怎么办,这时就是进程的强大之处啦,同时进行两个或更多的动作,第四个,是exec函数,execl是exec下的一个原形,这个结尾处是l,就是list的意思,说明执行程序的命令行参数以列表的方式提供,但是需要注意的就是结尾出是用NULL。代码如下:

1.:

#include <stdio.h>
#include <sys/fcntl.h>


int main()
{
int fd,fd1;
char buf[300];
if((fd = open("pass",O_WRONLY|O_CREAT,0644))<0)//这是用读写的方式打开,如果没有则创建文件
{
perror("open");
}
fd1 = open("/etc/passwd",O_RDONLY);//以读的形式打开
int size;
while((size = read(fd1,buf,300))>0)
write(fd,buf,size);
close(fd);
close(fd1);
return 0;


2:

#include <stdio.h>


int main()
{
mkdir("test",0444);
return 0;
}


3:

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
 
int main()
{
pid_t pid;
pid = fork();
if(pid<0)
{
printf("fail to fork\n");
exit(1);
}
else if(pid==0)//子进程
{
printf("parent1 is %u,child is %u\n",getppid(),getpid());
system("ls -l"); 
}
else
printf("parent is %u,child is %u\n",getppid(),getpid());
sleep(1);//让程序执行结束
return 0;

}


4:

#include <stdio.h>
#include <unistd.h>


int main()
{
execl("/bin/ls","ls","-al","/etc/passwd",NULL);//第一个是执行路径,最后一个为NULL
return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值