在c中使用System()调用Java文件
我试图从c代码运行一个java文件,该文件位于我的web服务器上。当我加载网页时,一个perl脚本调用一个c文件,然后调用java文件 我在我的c文件中设置了呼叫:在c中使用System()调用Java文件,java,c,web-services,perl,Java,C,Web Services,Perl,我试图从c代码运行一个java文件,该文件位于我的web服务器上。当我加载网页时,一个perl脚本调用一个c文件,然后调用java文件 我在我的c文件中设置了呼叫: System(java -cp <path> MyClass); System(java-cp-MyClass); 但是这个System()调用返回256-(我想是找不到文件) 我也尝试过: System(cd /<path> && java MyClass); 系统(cd/&&java
System(java -cp <path> MyClass);
System(java-cp-MyClass);
但是这个System()调用返回256-(我想是找不到文件)
我也尝试过:
System(cd /<path> && java MyClass);
系统(cd/&&javamyclass);
得到同样的结果
如果我通过ssh从终端运行完全相同的命令,它工作得很好,只是当我尝试从浏览器运行代码时,它给出了这个错误
如果我的语法不正确,有什么想法吗?还是我做错了什么?它是否与我被迫使用的perl>c>java链有关
编辑c运行时似乎没有查看$PATH。我将绝对路径添加到java.exe,它成功了!呜呜
tldr
解决方案:
System("/opt/jdk1.6.0_43/bin/java -cp <path> MyClass");
System(“/opt/jdk1.6.0_43/bin/java-cp MyClass”);
根据,您的错误实际上是乘以256,您的返回值实际上是1
。您能在C文件中提供准确的代码吗?(不一定是整个C文件,而是C文件中出现的相关部分),因为System(java-cpmyclass)你的意思是系统(java-cp/theory/www/bin/tree-MyClass)
right?解决此问题的正常方法是从新生成的进程中fork()
然后exec()
。另外,system
需要一个字符串,对吗?例如,系统(“ls-l”)
;