标签: exec

有没有办法在c中运行任何exec系列函数作为线程

我认为问题是不言自明的.

我知道exec运行在另一个进程上,所以如果我想要一个目录,我会做那样的事情.

int pid;
if((pid = fork()) != -1) {
     if(!pid) {
         execl("/bin/ls", "-a", "-l", (char *) 0);
     } else {
         wait(&status);
     }
} else //error
Run Code Online (Sandbox Code Playgroud)

如果你想创建一个进程,那很好,但线程呢?我虽然冷杉创建线程然后exec函数,但这将使我刚刚创建的线程有两个进程

c multithreading pthreads process exec

3
推荐指数
2
解决办法
3720
查看次数

php在后台exec()函数中

我制作了这个脚本来测试PHP的执行作为后台进程

foreach($tests as $test) { 
   exec("php test.php ".$test["id"]); 
} 
Run Code Online (Sandbox Code Playgroud)

正如php过程背景中提出的 以及如何使用PHP通过Google Calendar API添加大量事件通知提醒?和php执行后台进程

但是,如果没有添加test.php,脚本的运行速度就会超过一个脚本.

我究竟做错了什么?

提前致谢!

php process exec

3
推荐指数
1
解决办法
3481
查看次数

如何在`mvn test`上添加Maven exec任务来执行

我的pom中有以下exec任务:

<plugins>
  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.1</version>
    <executions>
      <execution>
        <goals>
          <goal>exec</goal>
        </goals>
      </execution>
    </executions>
    <configuration>
      <executable>${project.basedir}/src/test/javascript/EnvJasmine/bin/run_all_tests.sh</executable>
    </configuration>
  </plugin>
</plugins>
Run Code Online (Sandbox Code Playgroud)

我跑的时候效果很好

mvn exec:exec
Run Code Online (Sandbox Code Playgroud)

但我也希望它在执行时运行

mvn test
Run Code Online (Sandbox Code Playgroud)

有人能帮我一下吗?

java testing exec maven

3
推荐指数
1
解决办法
2267
查看次数

如何从Java程序中调用shell脚本?

我在eclipse中使用ubuntu 10.04.我创建了一个shell脚本,exam.sh:

#!/bin/bash 
echo "Hello World"
Run Code Online (Sandbox Code Playgroud)

用chmod 755 exam.sh

在命令行上,我可以执行 ./exam.sh // ok command showing me Hello World

我想用java代码调用这个exam.sh,这是我的java代码:

public static void main(String[] args) {    
Runtime r = Runtime.getRuntime();
Process p = null;
String cmd[] = {"/bin/bash","cd","/home/erdi/Desktop", ".","/","exam.sh"};

try {
    p = r.exec(cmd);
    System.out.println("testing...");//ok
} catch (Exception e) {
    e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,我在哪里弄错了?是的我知道我可以通过谷歌搜索,但我没有找到我的问题的答案.它提供了有关此功能的howTos和教程,但我没有找到答案.

java shell exec

3
推荐指数
1
解决办法
6488
查看次数

使用execve的新路径来运行ls命令

我试图使用execve来运行ls命令.目前我正在使用以下参数运行它:

execve(args[0], args, env_args)
//args looks like {"ls", "-l", "-a", NULL}
//env_args looks like {"PATH=/bin", "USER=me", NULL}
Run Code Online (Sandbox Code Playgroud)

我期望这样做是使用我的新env_args运行ls命令,这意味着它将在我的PATH中查找ls.但是,这段代码实际上没有做任何事情,当我运行代码时它只返回我的命令提示符而没有输出.

使用相同的args []我使用execvp并且ls工作并搜索我当前的路径.

你能告诉我我做错了什么吗?

我想要做的是编写我自己的shell程序,在那里我可以创建和导出我自己的环境,并让exec使用我在char**中定义的环境.本质上我正在编写自己的函数来操作env_args来添加和删除变量,当我调用exec时我希望能够在{"ls"," - l",NULL}上调用exec并让它看不起我的新环境名为ls的有效程序的路径变量.我希望这能解释我的工作做得更好.在这种情况下,我不认为extern environ var对我有用.

c path exec execve

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

如何从Java使用Telnet

我需要telnet到服务器,执行一些脚本,为这些脚本提供输入并接收输出.我可以直接使用Runtime.exec()并提供telnet命令或者我是否需要了解套接字?我理解在exec()方法中,我可能需要在2个线程中进行输入和输出,是吗?

谢谢

java sockets runtime telnet exec

3
推荐指数
1
解决办法
2384
查看次数

如何中断exec并杀死子进程

我正在尝试在PHP CLI脚本中调用长时间运行的shell命令exec().但我不能为我的生活弄清楚如何中断PHP脚本并杀死衍生的子进程.好像我打电话exec(),我的信号处理程序被忽略了.以下代码正如我所期望的那样工作; 如果我将SIGTERM发送到进程,它会SIGTERM立即回复并退出.

<?php
  declare(ticks = 1);

  function sig_handler($signo) {
    switch ($signo) {
      case SIGTERM:
        echo 'SIGTERM' . PHP_EOL;
        flush();
        break;
      default:
    }
  }

  pcntl_signal(SIGTERM, 'sig_handler', false);

  sleep(60);
?>
Run Code Online (Sandbox Code Playgroud)

但是,如果我替换sleep(60);为exec('sleep 60');,在睡眠结束之前我不会到达我的信号处理程序.我有两个问题:

  1. 如何获取信号exec(或shell_exec或proc_open)?
  2. 捕获信号后,如何杀死由此产生的任何子进程exec?

php signals exec pcntl

3
推荐指数
1
解决办法
4374
查看次数

通过PHP exec传递变量

我正在使用php exec命令执行另一个文件.

我使用以下内容:

 exec ('php email.php');
Run Code Online (Sandbox Code Playgroud)

但我希望通过exec命令将名为$ body的变量传递给"email.php"文件.如何通过exec命令传递变量?

php exec

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

如何从PHP网站作为特定的Windows用户运行可执行文件?

默认情况下,PHP在IUSR帐户下运行.直接执行时:

$lastline = exec('D:\\MyProgram.exe', $output, $return_var);
Run Code Online (Sandbox Code Playgroud)

它运行,但由于权限不足,程序无法完成任务.我的问题是:如何在PHP网站上的特定Windows帐户下运行可执行文件?

我试过了:

通过Sysinternals PsExec执行时:

$lastline = exec('D:\\PsExec.exe -u UserName -p Password -accepteula "D:\\MyProgram.exe"', $output, $return_var);
Run Code Online (Sandbox Code Playgroud)

MyProgram.exe甚至根本不执行.PHP抛出空输出,return_var是-1073741502.我认为这是某种未处理的异常.


通过lsrunas执行时:

$lastline = exec('D:\\lsrunas.exe /user:UserName /password:Password /domain:DOMAIN /command:"D:\\MyProgram.exe" /runpath:D:\\', $output, $return_var);
Run Code Online (Sandbox Code Playgroud)

MyProgram.exe也不执行.PHP抛出空输出,return_var是0.


Microsoft的内置runas命令不起作用,因为它不接受密码作为参数.


使用像不同的PHP函数尝试shell_exec,system和passthru


尝试在IIS下创建新的应用程序池,以在LOCAL SERVICE,SYSTEM或特定用户下运行网站.编辑:这是我出错的地方.它应该工作,但在未启用"加载用户配置文件"设置时失败(我的答案中的第3步).

有没有人有工作建议?

注意:所有命令都在直接通过命令行工作和测试.

php command-line exec psexec runas

3
推荐指数
1
解决办法
5238
查看次数

exec调用后的gdb调试过程

调用后我不知道调试后的调试方法execle.我看过其他网站和一些建议使用set fork-follow-mode child,这有助于我进入分支.然而,在fork之后,我退出到main函数,并且永远不会进入我正在执行的程序.

这是代码:

            } else if (!(pid_T2 = fork())) {
                char **env = NULL;
                char *units_env = NULL;
                char *sleep_env = NULL;
                size_t sleep_sz = 16;

                env = (char **) malloc(3 * sizeof(char *));
                sleep_env = (char *) malloc(sleep_sz * sizeof(char));
                snprintf(sleep_env, sleep_sz, "TSTALL=%d", cmd_args->sleep_num);
                if (cmd_args->kb) {
                        units_env = "UNITS=1";
                } else {
                        units_env = "UNITS=0";
                }
                *(env) = units_env; *(env + 1) = sleep_env; *(env + 2) = "TMOM=0";

                /*printf("%s %s\n", *(env), *(env …
Run Code Online (Sandbox Code Playgroud)

gdb exec

3
推荐指数
1
解决办法
4846
查看次数

标签 统计

exec ×10

php ×4

java ×3

c ×2

process ×2

command-line ×1

execve ×1

gdb ×1

maven ×1

multithreading ×1

path ×1

pcntl ×1

psexec ×1

pthreads ×1

runas ×1

runtime ×1

shell ×1

signals ×1

sockets ×1

telnet ×1

testing ×1