C 使用System Call:exec 执行Python 脚本(或其他程序)

以前写java的时候有过几次想调用Python的念头,但是当时水平比较低不知道怎么办(但是好像才学编程一学期吧,什么都不懂,唉,其实有好多库可以调用)。

最近在上操作系统课的时候讲到System Call。其中有一个exec正好可以完成上述工作,只不过是从C里执行而已。

System Call 就是操作系统与应用程序之间的接口。当在user space 中调用system call时会进入kernel mode。(具体就不说了,网上好多)

exec是一个比较复杂的system call,它会将当前进程的 core image( 也就是当前进程地址空间中的内容) 替换掉。举个例子吧,当调用fork的时候,子进程里的内容和父进程里的内容一模一样,只不过子进程和父进程的pid不同,但是如果在子进程中调用exec system call, 此时子进程里的东西就全被替换为新的东西,在下面的例子中,子进程中的内容和我们直接在终端中使用命令 “python /Users/alex/Desktop/test.py”产生的进程里的东西一模一样。

在下面的例子中,我们调用的是execve,我觉得大家应该还见过execvp, execl, execle等等一席勒以exec开头的函数,但实际上它们只是接受的参数不同而已,本质上最后调用的还是exec,这里有个回答解释了这些的区别 链接

说一下execve的参数说明,详情可以参阅

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值