我是使用 C 中的系统调用进行编程的初学者。我正在尝试在我的一个程序中使用 execve 调用。我必须将一个整数作为参数传递给通过 execve 调用的程序。然而,在互联网上阅读并查看示例代码,我可以看到我们只能传递字符串作为参数。因此,我尝试使用“sprintf”将整数转换为字符串,然后使用“strcpy”将该字符串复制到必须通过 execve 传递的字符串数组的元素之一中。但使用 strcpy 会导致分段错误。我通过调试检查了这一点,如果我不使用 strcpy 而只是编写类似 - myargv[1]="123"; 的内容,那么整个程序就可以正常运行了。但由于我必须传递一个可变整数作为参数而不是常量,因此我无法使用上述方法。
这个问题已经困扰我一段时间了。请帮我看看我应该做什么。
private void myFunction(String userName){
String fileName = this.generateFile(userName);
String[] command = new String[4];
command[0] = "cmd";
command[1] = "/C";
command[2] = "dir";
command[3] = "7za a "+ userName+".7z "+ fileName +" -p"+this.password;
try {
Process p = Runtime.getRuntime().exec(command);
BufferedReader stdInput = new BufferedReader(new
InputStreamReader(p.getInputStream()));
BufferedReader stdError = new BufferedReader(new
InputStreamReader(p.getErrorStream()));
while ((s = stdError.readLine()) != null) {
System.out.println(s);
}
ProcessBuilder proc = new ProcessBuilder(command[3]);
proc.start();
} catch(Exception e) {
System.out.println(e.toString());
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试了两种在JAVA中运行命令行的方式。他们都没有工作。谁能告诉我我做错了什么。我尝试了 3 个小时但没有成功:(
我不断收到此错误 File Not Found …
我的情况类似于PHP shell_exec 使用 ssh 运行 shellscript,但不一样。
情况:我在两台服务器之间交换了 ssh 密钥,切换到www-data用户并通过 SSH 连接到第二台服务器,无需密码。
测试 1:ssh user@10.8.0.6 Documents/run.sh list 在 shell 中执行时工作正常
测试 2:将简单的 PHP Exec 放入 PHP 文件中效果很好。它返回一个数组并且Retval为0
测试 3:将 exec 放入“大”PHP 脚本中并调用它会导致 Retval 255(致命错误?!?!?)
所以目前我真的不明白为什么它不起作用。我试图找出有关 retval 255 的更多详细信息,但没有走得太远。
PHP5 与 PHP5 cli 之间的差异一定存在于某个地方。但在我不得不使用 OpenVPN 之前,它通过正常的 Apache 调用也可以正常工作。
"rGEO"我尝试使用以下命令在目录中搜索字符串:
find . -name "*" -type f -print | xargs grep "rGEO"
./home/oper1/AgencyTape/geo/exe/gngeo.cmd:${WEB_DIR}/exe/web_reports.sh -aGN -d${prev_ccyy}${prev_mm} -rGEO -nomail
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我返回具有匹配行的文件名,以及与上述字符串匹配的行。
find . -name "*" -type f -exec grep "rGEO" {} \;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我返回:
${WEB_DIR}/exe/web_reports.sh -aGN -d${prev_ccyy}${prev_mm} -rGEO -nomail
Run Code Online (Sandbox Code Playgroud)
包含该行的文件不会被打印 - 并且,正如您所看到的,两个输出之间存在很大差异。
使用xargs可以提供更清晰、更精确的输出。
我的问题是:这两个命令有什么区别?对我来说,他们似乎执行相同的逻辑,但得到不同的结果。
我试图在 C++ 中运行 execl(),但它失败了,我不知道为什么。
string fileName = "test.txt";
string computerName = "jssoile@palmetto.school.edu";
pid_t pid;
int status;
if ((pid = fork()) < 0) { /* fork a child process */
printf("*** ERROR: forking child process failed\n");
exit(1);
}
else if (pid == 0) { /* for the child process: */
if (execl("scp", fileName.c_str(), computerName.c_str(), NULL) < 0) { /* execute the command */
printf("*** ERROR: exec failed\n");
exit(1);
}
}
else { /* for the parent: */
while (wait(&status) != pid) …Run Code Online (Sandbox Code Playgroud) 如何获取已执行命令的返回码:
<?php
include('Net/SSH2.php');
$ssh = new Net_SSH2('www.domain.tld');
if (!$ssh->login('username', 'password')) {
exit('Login Failed');
}
echo $ssh->exec('cat /tmp/file_tmp');
//verify the return code
echo $ssh->exec('echo $?');
?>
Run Code Online (Sandbox Code Playgroud)
echo $?(Linux) 和echo %errorlevel%(Win) 不起作用。
有任何想法吗??
我一直在寻找一个真正的例子,但我找不到任何例子。我对 node js 完全陌生。
我正在设置一个使用命令行工具获取密码的服务。
命令行“pw get key”返回与密钥关联的密码。命令行“pw set key password”设置与密钥关联的密码。
到目前为止,我拥有的部分代码是:
const util = require('util');
const exec = util.promisify(require('child_process').exec);
async function cmdPwGet(key) {
const { stdout, stderr } = await exec(`pw get ${key}`);
console.log('stdout:', stdout);
console.log('stderr:', stderr);
}
async function cmdPwPut(key, passwd) {
const { stdout, stderr } = await exec(`pw set ${key} ${passwd}`);
console.log('stdout:', stdout);
console.log('stderr:', stderr);
}
class PwService {
constructor (KEY){
this.basekey = KEY;
this.pwd = "";
}
setPw (key, passwd) {
key = this.basekey + …Run Code Online (Sandbox Code Playgroud) 我有这个应用程序的想法,但它在很大程度上取决于 CMD,所以我想知道我是否可以从 Flutter 桌面应用程序中打开任何其他应用程序(例如 CMD)。
我知道在 Java 中它可以使用 exec() 来完成,但是在 dart/flutter 中它有什么等价物吗?
我需要找到包含名为“thisfile”的文件的所有目录。找到文件后,我需要在包含文件的每个目录中执行某个命令。例如:查找包含“thisfile”的目录并列出每个目录中包含的所有文件。我正在尝试:find . -name "thisfile",然后我正在考虑将 cd 放入每个文件夹并执行命令,但我无法实现这一点。例如类似的东西find . -name "thisfile" -exec dirname && cd into those folders && ls"
在这里熟悉 Golang,我正在尝试执行 shell 命令,我需要对任何 .pem 文件进行 chmod,所以我决定使用通配符 *
func main() {
cmd := exec.Command( "chmod", "400", "*.pem" )
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stdout
if err := cmd.Run(); err != nil {
fmt.Println( "Error:", err )
}
Run Code Online (Sandbox Code Playgroud)
我在执行时不断收到此错误:
chmod: cannot access '*.pem': No such file or directory
Error: exit status 1
Run Code Online (Sandbox Code Playgroud)