首页 > 代码库 > Linux学习-1进程
Linux学习-1进程
在Linux中,在一个程序的内部启动另外一个程序,从而创建一个新进程。
1.这个工作可以通过库函数system来完成。
#include<stdlib.h>
int system (const char *string);
system函数的作用是,运行以字符串参数形式的传递给他打命令并等待该命令完成。命令的执行情况就如同在shell中执行如下的命令:
$ sh -c string
如果无法启动shell来运行这个命令,system函数将返回错误码127,其他错误返回-1.
system.c
#include<stdlib.h> #include<stdio.h> int main() { printf("Running upper with system\n"); system("./upper"); printf("Done.\n"); exit(0); }
编译gcc system.c -o system
执行时./system
此时会发现会执行upper程序。
2.创建进程底层接口exec。
exec系列函数由一组相关的函数组成,他们在进程的启动方式和程序参数的表达方式上各有不同。exec函数可以把当前进程替换为一个新进程。你可以使用exec函数将程序的执行从一个程序切换到另一个程序。
exec函数比system函数更有效,因为在新的程序启动后,原来的程序就不再运行了。
#include<unistd.h>
int execl(xxx);
int execlp(xxx);
int execle(xxx);
int execv(xxx);
int execvp(xxx);
int execve(xxx);
还是以upper程序为例:
exe_up.c
#include<stdio.h> #include<unistd.h> #include<stdlib.h> int main() { printf("runing with execlp\n"); execlp("./upper", "/upper", NULL); printf("down"); exit(0); }
gcc exe_up.c -o exe_up
./exe_up
ps:
upper.c
#include<stdio.h> #include<stdlib.h> #include<ctype.h> int main() { int ch; while( EOF != (ch=getchar())) { putchar(toupper(ch)); } exit(0); }
gcc upper.c -o upper
以上所有内容来自《Linux程序设计 第四版》
Linux学习-1进程
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。