我正在Linux上编写多线程程序,希望在线程中创建一个进程,而不结束其他线程。我查看了fork/exec,但是在linux状态的第3p节中的exec手册页中:
A call to any exec function from a process with more than one thread
shall result in all threads being terminated and the new executable
image being loaded and executed. No destructor functions shall be
我是在Linux平台上开发的。
我想在我的库中创建一个新的进程,而不替换当前执行的映像。
因为我正在开发一个库,所以我没有一个主要的功能。
我希望在调用程序关闭后继续新进程(就像CreateProcess Windows一样)。
在Linux中有可能吗?
类似于这样的功能:
void Linux_CreateProcess(const char* app_name)
{
// Executing app_name.
// ???????? what is the code ??????
// app_name is running and never close if curr
Process p = Runtime.getRuntime().exec(command);
is = p.getInputStream();
byte[] userbytes = new byte[1024];
is.read(userbytes);
我想在linux os中从java执行一个shell命令。但是pmd报告说不要使用java Runtime.exec()。为什么?原因何在?有没有替代Runtime.exec()的方法?
我对Linux Shell脚本编程非常陌生,不知道是否有人可以帮助我完成以下工作。
我创建了一个脚本来与我的linux机器同步时间,但似乎只有一个exec命令完成
#!/bin/bash
#Director SMS Synch Time Script
echo The current date and time is:
date
echo
echo Synching GTS Cluster 1 directors with SMS.
echo
echo Changing date and time for director-1-1-A
exec ssh root@128.221.252.3
如何在windows中使用Runtime.getRuntime().exec(命令)?
1.
command = "cat data.json"; // works in linux terminal
Runtime.getRuntime().exec(command) // runs in linux => Runs OK
2.
command = "type data.json"; // works in windows cmd
Runtime.getRuntime().exec(command) // runs in windows => F
有人能澄清相关和不相关过程的定义吗?
我知道叉创建了两个相关的进程
fork()
但是,当我们调用exec*家庭函数来替换程序映像时,我不确定进程是否仍然是相关的:
if (child) {
exec("path to binary", ...) <- Is it still related process
}
我要问的原因是为了澄清在哪种场景中可以使用哪种IPC方法。例如,只允许在相关进程之间使用pipes。因此,我在上面询问,我编写的新程序(可能使用不同的语言)是否可以访问管道文件描述符。
我们是否可以说,使用fork()创建的任何进程,无论使用的是exec还是
我需要获取通过Java的Runtime.getRuntime().exec()命令启动的进程的PID。
我知道如何在JNA中这样做。但我真的想用JNI来做这件事,并创建我自己的库。有人知道怎么做吗?
import java.lang.reflect.Field;
class GetPid
{
public native int getPid( long procHandle);
static
{
System.loadLibrary("getpid");
}
public static void main(Strin
我需要创建检查参数的脚本,参数是Linux命令:
猫script.sh
case "$1" in
cp|cd|ls ) exec "$0" "$1" ;;
*) echo "error: not permitted" ;;
esac
我需要添加检查,如果第一个参数是像这样的导出:
-s $file && echo OK
所以我添加了这样的条件:
case "$1" in
cp|cd|ls| "[ -s .* ] && e
为了逐行处理bash中的文本文件,我通常实现一个while循环,如下所示:
function doSomething() {
local inputFile="$1"
local fd=""
local line=""
exec {fd}<"$inputFile" # open file
echo "Opened ${inputFile} for read using descriptor ${fd}"
while IFS='' read -r
我正在尝试将Go web服务器创建为小型Docker映像。理想情况下,干净的映像只包含Go应用程序本身(并且可能支持web组件,但不包含Go构建环境)。
这是我的Dockerfile
# golang:latest as build-env
FROM golang:latest AS build-env
RUN mkdir /app
ADD . /app/
WORKDIR /app
RUN cd /app && GO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o myapp .
# go build -o mya