标签: exec

如何默认设置close-on-exec

我正在实现一个库来运行命令.Linux上的库是C语言.

它目前执行popen()调用来运行命令并获取输出.问题是该命令继承了所有当前打开的文件处理程序.

如果我做了一个fork/exec,我可以明确地关闭孩子的处理程序.但这意味着重新实现popen().

我可以在所有处理程序上设置close-on-exec而不必逐个循环它们吗?

我可以将close-on-exec设置为进程的默认值吗?

谢谢!

c linux fork exec

18
推荐指数
1
解决办法
2万
查看次数

在php文件上调用exec并传递参数?

我想用exec调用一个php文件.

当我调用它时,我希望能够传递一个变量(一个id).

我可以打电话echo exec("php /var/www/unity/src/emailer.php");,但是我添加像echo exec("php /var/www/unity/src/emailer.php?id=123");exec调用之类的那一刻就失败了.

我怎样才能做到这一点?

php variables exec

18
推荐指数
1
解决办法
5万
查看次数

在单个exec php语句中执行两个shell命令

我想显示在指定日期之后修改的所有文件

命令是

touch --date '2011-09-19 /home/  , find /home/
Run Code Online (Sandbox Code Playgroud)

我如何在单个exec语句中执行这两个命令.谢谢

php exec

18
推荐指数
2
解决办法
4万
查看次数

抓取exec的输出

所以我试图写一些需要抓取命令输出的东西,然后虐待它然后将它传递给另一个程序.

但我有一个问题,我无法弄清楚如何获得命令输出并将其存储在下面是我的样本

if(fork() == 0){
   execl("/bin/ls", "ls", "-1", (char *)0);
   /* hopefully do something with the output here*/
}else{
  *other stuff goes here*
 }`
Run Code Online (Sandbox Code Playgroud)

所以我基本上想知道是否有任何方法可以从"execl"获取输出并将其传递给其他东西(例如通过将其存储在某种缓冲区中).

任何建议都会很棒.谢谢你们.."

c terminal fork exec

18
推荐指数
3
解决办法
4万
查看次数

使用xcopy将文件从多个目录复制到一个目录

是否可以使用xcopy仅使用一个xcopy命令将文件从多个目录复制到一个目录中?

假设我有目录树

根\源\ Sub1的\分公司2

我想将目录root\Source包括子文件夹中的所有.xml文件复制到root\Destination.我不想复制文件夹结构,只复制文件.

msbuild xcopy exec

17
推荐指数
1
解决办法
6万
查看次数

如何退出子进程并从execvp()返回其状态?

在我的简单自定义shell中,我正在从标准输入中读取命令并使用execvp()执行它们.在此之前,我创建了当前进程的fork,我在该子进程中调用了execvp(),之后,我调用exit(0).

像这样的东西:

pid = fork();

if(pid == -1) {
    perror("fork");
    exit(1);
}

if(pid == 0) {
    // CHILD PROCESS CODE GOES HERE...
    execvp(pArgs[0], pArgs);
    exit(0);
} else {
    // PARENT PROCESS CODE GOES HERE...
}
Run Code Online (Sandbox Code Playgroud)

现在,使用execvp()运行的命令可以返回错误吗?我想正确地处理它,现在,我总是调用exit(0),这意味着子进程将始终具有"OK"状态.

如何从execvp()调用返回正确的状态并将其放入exit()调用?我应该只获取execvp()返回的int值并将其作为exit()参数而不是0传递.这是否足够正确?

c fork exec exit

17
推荐指数
1
解决办法
6万
查看次数

为什么在exec中关闭了闭包?

在Python 2.6中,

>>> exec "print (lambda: a)()" in dict(a=2), {}
2
>>> exec "print (lambda: a)()" in globals(), {'a': 2}
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1, in <module>
  File "<string>", line 1, in <lambda>
NameError: global name 'a' is not defined
>>> exec "print (lambda: a).__closure__" in globals(), {'a': 2}
None
Run Code Online (Sandbox Code Playgroud)

我希望它打印2两次,然后用单个打印元组cell.这与3.1中的情况相同.这是怎么回事?

python closures exec

17
推荐指数
1
解决办法
1480
查看次数

使用exec在新进程中执行系统命令

我正在尝试生成一个执行系统命令的进程,而我自己的程序仍在进行,两个进程将并行运行.我正在研究linux.

我在网上查了一下,听起来我应该使用exec()系列.但它并不像我预期的那样有效.例如,在下面的代码中,我只看到"之前"打印,但不是"完成".

如果我发布任何东西,我很好奇吗?

#include <unistd.h>
#include <iostream>

using namespace std;

main()
{
   cout << "before" << endl;
   execl("/bin/ls", "/bin/ls", "-r", "-t", "-l", (char *) 0);
   cout << "done" << endl;
}
Run Code Online (Sandbox Code Playgroud)

[UPDATE]

谢谢你们的评论.现在我的程序看起来像这样.一切正常,除了最后,我必须按回车完成程序.我不知道为什么我要按最后一次输入?

#include <unistd.h>
#include <iostream>

using namespace std;

main()
{
   cout << "before" << endl;
   int pid = fork();
   cout << pid << endl;
   if (pid==0) {
      execl("/bin/ls", "ls", "-r", "-t", "-l", (char *) 0);
   }
   cout << "done" << endl;
}
Run Code Online (Sandbox Code Playgroud)

c++ linux parallel-processing process exec

17
推荐指数
2
解决办法
5万
查看次数

PHP exec改变编码

我需要使用php exec命令解决UTF-8文件名.问题是php exec命令似乎不懂utf-8.我使用这样的东西:

echo exec('locale charmap');
Run Code Online (Sandbox Code Playgroud)

回报 ANSI_X3.4-1968

看看这个问题,解决方案看起来像这样:

echo exec('LANG=de_DE.utf8; locale charmap'); 
Run Code Online (Sandbox Code Playgroud)

但我仍然得到相同的输出: ANSI_X3.4-1968

另一方面 - 如果我在bash命令行上执行这个php命令:

php -r "echo exec('LANG=de_DE.UTF8 locale charmap');"
Run Code Online (Sandbox Code Playgroud)

输出为UTF-8.所以问题是:

  1. 为什么在bash和apache_module/web页面执行php命令有不同的结果?
  2. exec如果它作为apache模块在网站内运行,如何设置UTF-8 ?

php encoding exec utf-8

17
推荐指数
2
解决办法
1万
查看次数

Bash使用exec设置变量

您可以为单个命令设置变量,如下所示:

MY_VARIABLE=my_value ./my_script.sh
Run Code Online (Sandbox Code Playgroud)

你可以交给另一个这样的脚本:

exec ./my_script.sh
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试这样做时:

exec MY_VARIABLE=my_value ./my_script.sh
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

exec: MY_VARIABLE=my_value: not found
Run Code Online (Sandbox Code Playgroud)

这是为什么?
有没有办法做到这一点?

syntax bash exec

17
推荐指数
2
解决办法
2万
查看次数

标签 统计

exec ×10

c ×3

fork ×3

php ×3

linux ×2

bash ×1

c++ ×1

closures ×1

encoding ×1

exit ×1

msbuild ×1

parallel-processing ×1

process ×1

python ×1

syntax ×1

terminal ×1

utf-8 ×1

variables ×1

xcopy ×1