标签: exec

在python中创建类似环境的shell的正确方法?

我正在尝试创建一个类似于shell的环境,其中向用户显示">>>"并且可以键入任意多个预定义的命令.但是,我能想到实现这一点的唯一方法是使用字典映射命令 - > code和python的"exec".

有没有更正确的方法呢?

python shell exec

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

exec()(或类似函数)传回错误输出

我可以传回执行脚本的输出,但如果脚本错误输出我没有输出错误.

// This is a file that doesn't exists, for testing
$command = './path/to/non/existing/script.sh';

$commandOutput = exec($command, $commandOutput); // works but no error output
//passthru($command, $commandOutput); // works but error output was 127 not file not found
//$commandOutput = escapeshellcmd($command);
echo "The Output:\n|".$commandOutput."|\n";
var_dump($commandOutput);

The Output:

||
Run Code Online (Sandbox Code Playgroud)

我想输出错误信息:

The Output:

|file not found|
Run Code Online (Sandbox Code Playgroud)

如何或者什么功能/参数会这样做?

php error-handling exec

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

如何执行长动态查询(大于4000个)字符-再次

注意:我正在SQL Server 2008 R2下运行...

我花了一些时间阅读本网站以及其他网站上数十篇有关如何执行动态SQL(查询超过4000个字符)的文章。我已经尝试了十多种建议的解决方案。共识似乎是将查询分为4000个字符的变量,然后执行以下操作:

EXEC (@SQLQuery1 + @SQLQuery2)
Run Code Online (Sandbox Code Playgroud)

这对我不起作用-查询在@ SQLQuery1的末尾被截断。

现在,我已经看到了人们如何通过使用REPLICATE一堆空格等来“强制”长查询的示例,但这是一个真正的查询-但是比这复杂得多。

我有名称为“ Company_A_ItemView”的SQL视图。

我有10家公司想要创建相同的确切视图,并使用不同的名称,例如“ Company_B_ItemView”,“ Company_C_ItemView” .. etc。

如果您提供帮助,请不要问为什么会有多个视图-只需接受我需要这样做即可,好吗?

每个公司都有自己的一组表,并且CREATE VIEW语句按名称引用了几个表。这是Brief示例,但请记住,查询的总长度约为6000个字符:

CREATE view [dbo].[Company_A_ItemView] as  
select  
WE.[Item No_],  
WE.[Location Code],   
    LOC.[Bin Number],  
[..more fields, etc.]  
from  
[Company_A_Warehouse_Entry] WE  
left join  
[Company_A_Location] LOC  
Run Code Online (Sandbox Code Playgroud)

...你明白了

所以,我目前正在做的是:

一种。将CREATE VIEW语句的内容拉入2个声明的变量中,例如

Set @SQLQuery1 = (select text 
                  from syscomments 
                  where ID = 1382894081 and colid = 1)  
Set @SQLQuery2 = (select 
                  from syscomments 
                  where ID = 1382894081 and colid = 2)
Run Code Online (Sandbox Code Playgroud)

请注意,这就是SQL存储长定义的方式-创建视图时,它将文本存储到多个syscomments记录中。在我的情况下,视图被拆分为第一个系统记录记录中的3591个字符的文本块,其余文本在第二个记录中。我不知道为什么SQL在syscomment字段中不使用所有4000个字符。一句话就打断了这个陈述。

请注意,在我所有的示例中,所有@SQLQueryxxx变量都声明为varchar(max)。我也尝试过将它们声明为nvarchar(max)和varchar(8000)以及nvarchar(8000),结果相同。

b。然后,对“ Company_A”执行“搜索并替换”,然后将其替换为“ …

sql-server dynamic exec sql-server-2008-r2

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

为什么在C中重定向stdin不起作用?

我正在尝试通过管道"my_pipe"将stdin从父级重定向到子级,但是当我运行程序时,我看不到预期的结果.

当我执行程序时,它期望从stdin输入,那么为什么它没有重定向在dup2中的stdin?

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <string.h>



int main(int argc, char* argv[])
{
    char* arguments[] = {"sort", NULL};

    int my_pipe[2];
    if(pipe(my_pipe) == -1)
    {
        fprintf(stderr, "Error creating pipe\n");
    }

    pid_t child_id;
    child_id = fork();
    if(child_id == -1)
    {
        fprintf(stderr, "Fork error\n");
    }
    if(child_id == 0) // child process
    {
        close(my_pipe[1]); // child doesn't write
        dup2(0, my_pipe[0]); // redirect stdin

        execvp(argv[0], arguments);

        fprintf(stderr, "Exec failed\n");
    }
    else
    {
        close(my_pipe[0]); // parent doesn't read

        char reading_buf[1];
        write(my_pipe[1], …
Run Code Online (Sandbox Code Playgroud)

c stdin fork pipe exec

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

如何使用Runtime.getRuntime().exec()打开名称中带空格的应用程序?

所以我试图制作一个通用的应用程序,我试图让它具有打开应用程序的能力.所以,我想要让它打开一个应用程序,如果它是一个单词,但有空格,它永远不会工作.我是这样做的:

    if(textField.getText().startsWith("application open")){
    try {
        String string1 = textField.getText().substring(17, textField.getText().length());
        Runtime.getRuntime().exec("open /Applications/\"" + string1 + "\".app");
        textArea.append("Opening application " + string1 + "..." + newline);
    } catch (IOException ioe) {
        ioe.printStackTrace();
    }
    }
Run Code Online (Sandbox Code Playgroud)

如果有人能帮助我,那就太好了!霍华德史塔克,提前谢谢

java macos exec

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

php exec无限循环

我有以下调用exec在后台运行脚本test.php.

exec("/home/gooffers/test.php?one=one &");
Run Code Online (Sandbox Code Playgroud)

脚本test.php包含以下内容

$test = $_GET['one'];
echo $test;
Run Code Online (Sandbox Code Playgroud)

然而,这会造成无限循环(无限数量的进程),从而导致服务器崩溃.为什么会这样呢?

php loops exec

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

Linux,C使用cat with exec(3)

我正在做这个小程序,在调用程序时读取用户参数.像ls,rm等简单的调用很容易做到,我无法弄清楚该怎么做是这样的:

cat file1 >> file2我想要做的是将一个文件的内容添加到另一个文件,而不是替换内容.

所以如果我这样做:./ programName add file1 file2

if(strcmp(argv[1], "add")==0){
                char *parmList[] ={ "cat", argv[2], ">>",  argv[3], NULL}; 
                execv("/bin/cat", parmList);
                exit(EXIT_SUCCESS);
}
Run Code Online (Sandbox Code Playgroud)

返回是控制台上打印的两个文件

cat:>>:没有这样的文件或目录

我究竟做错了什么?没有猫,有没有其他方法可以做到这一点?ps:必须与exec(3).

编辑:对于任何感兴趣的人,回复帮助我找到了一种方法,尽管我不确定是否有更好的方法来做到这一点.我做的是转换

"cat",argv [2],">>",argv [3]

到一个字符串然后按照建议使用/ bin/sh -c.

这是代码

char parmList[180];
strcpy (parmList,"cat ");
strcat (parmList,argv[2]);
strcat (parmList," >> ");
strcat (parmList,argv[3]);
char *args[] = { "/bin/sh", "-c", parmList, NULL };
execve("/bin/sh", args, NULL);
Run Code Online (Sandbox Code Playgroud)

c linux exec system-calls cat

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

tcl:eval和exec混淆点

我exec和evalTcl 有点困惑.在以下示例中:

set cmd "mkdir new_folder";
exec $cmd
Run Code Online (Sandbox Code Playgroud)

不能与错误消息一起使用:couldn't execute "mkdir new_folder" no such file or directory. 并且eval有效

set cmd "mkdir new_folder";
eval exec $cmd
Run Code Online (Sandbox Code Playgroud)

我也尝试过这种方式:

set cmd_1 "mkdir";
set cmd_2 "new_folder"
exec $cmd_1 $cmd_2
Run Code Online (Sandbox Code Playgroud)

它也很好用.那是什么原因?

eval tcl exec

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

如何从函数中的exec返回值?

我尝试:

def test(w,sli):
    s = "'{0}'{1}".format(w,sli)
    exec(s)
    return s

print test("TEST12344","[:2]")
Run Code Online (Sandbox Code Playgroud)

其返回值“ TEST12344” [:2]

如何从函数中的exec返回值

python string exec python-2.7

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

Golang为CMD执行cd命令

我想使用golang和exec库转到某个路径“ c:\”并运行一个.exe文件。

当我运行go代码时,它会给我:

exec:“ cd:/”:文件不存在

exec go

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