在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
学习进程时,linu c上说新开的进程一般要执行另外一个程序,同时与父进程执行同一个程序没有意义 如下是如何执行一个新的程序 使用exec函数簇 exec函数簇包含如下函数 编写两个代码文件,其中使用exec_execve代码产生一个子进程来调用另一个程序processimage,代码如下 /** /* * processimage.c */ #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> int main(int argc, char const *argv[], char ** environ) { /* code */ int i; printf("%s\n", "I am process image"); printf("My pid is:%d, My pid is:%d\n", getpid(), getppid()); printf("My uid is:%d, My gid is:%d\n", getuid(), getgid()); for (i = 0; i < argc; i++) { printf("argv[%d] is: %s\n", i, argv[i]); } return 0; } 我们将这两个代码进行编译 gcc -o exec_execve exec_execve.c gcc -o processimage processimage.c 然后执行 ./exec_execve test execve 结果如下 执行新程序后的进程保持了原来进程的pid, ppid,实际用户id,实际组id 另外还有当前工作目录,根目录,创建文件时使用的屏蔽字,进程信号屏蔽字,未决警告,和进程相关的使用处理器的时间,控制终端,文件锁 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论