system函数:
表头文件
#include<stdlib.h>
定义函数
int system(const char * string);
函数说明
system()会调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string字符串所代表的命令
返回值
如果fork()失败 返回-1
如果exec()失败,表示不能执行Shell,返回值相当于Shell执行了exit(127)
如果执行成功则返回子Shell的终止状态
System与exec的区别
1、system()和exec()都可以执行进程外的命令,system是在原进程上开辟了一个新的进程,但是exec是用新进程(命令)覆盖了原有的进程
2、system()和exec()都有能产生返回值,system的返回值并不影响原有进程,但是exec的返回值影响了原进程
利用上一次学习生成的改变配置文件的可执行文件
#include<sys/types.h>
#include<sys/stat.h>
#include<stdio.h>
#include<unistd.h>
#include<string.h>
#include<stdlib.h>
#include<fcntl.h>
int main()
{
pid_t pid;
int data = 10;
while(1){
printf("input data,please.\n");
scanf("%d",&data);
if(data == 1){
int fdSrc;
pid = fork();
if(pid > 0){
wait(NULL);
}
if(pid == 0){
system("./fconf conf.txt");
}
}
else{
printf("do nothing\n");
}
}
return 0;
}
配置文件
修改前:
PEED=3
LENG=5
SCORE=9
LEVEL=5
**修改后:**
PEED=3
LENG=8
SCORE=9
LEVEL=5
因为exec函数有可能会破坏父进程的数据,造成出错,system函数会开辟新进程,避免了这种风险,所以可以用system函数。
各有其用,斟酌使用。
利用system函数与fork函数简单操作修改配置文件。
学识浅薄,简单"玩一玩",学习为用。
——师从上官可编程,陈立臣