小编Dmi*_*yev的帖子

bash pid和$$之间的区别

我是一个bash脚本初学者,我有一个"功课"要做.我想出了大部分的东西,但有一部分说我必须回应父bash的pid和我将要运行的两个子shell的pid.所以我在网上找到了这个(Linux文档项目):

#!/bin/bash4

echo "\$\$ outside of subshell = $$"                              # 9602
echo "\$BASH_SUBSHELL  outside of subshell = $BASH_SUBSHELL"      # 0
echo "\$BASHPID outside of subshell = $BASHPID"                   # 9602

echo

( echo "\$\$ inside of subshell = $$"                             # 9602
  echo "\$BASH_SUBSHELL inside of subshell = $BASH_SUBSHELL"      # 1
  echo "\$BASHPID inside of subshell = $BASHPID" )                # 9603
  # Note that $$ returns PID of parent process.
Run Code Online (Sandbox Code Playgroud)

所以这是我的问题:

1)第一个回声打印是什么?这是父母bash的pid吗?

2)为什么第二个回波打印出0?

3)$ BASH_SUBSHELL是命令还是变量?

4)我正在Mac上做所有事情,我会在某些日子里在Linux机器上尝试所有这些但是每当我运行这个脚本时$BASHPID都没有返回任何内容,我只是换了一个新行.这是因为我在Mac上运行它并且$BASHPID不能在Mac上运行吗?

linux macos bash

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

是否依赖于__del __()来清除python中的不可靠?

我阅读不同的方式来清理对象在Python中,我已经对这些问题跌跌撞撞(1,2)基本上说,清理使用__del__()是不可靠的,下面的代码应避免:

def __init__(self):
    rc.open()

def __del__(self):
    rc.close()
Run Code Online (Sandbox Code Playgroud)

问题是,我正在使用这个代码,我无法重现上述问题中引用的任何问题.据我所知,我不能用with声明来替代,因为我为闭源软件提供了一个Python模块(testIDEA,任何人?)这个软件将创建特定类的实例并处理它们,这些实例必须准备好在两者之间提供服务.__del__()我看到的唯一替代方法是手动调用open()close()根据需要,我认为这将非常容易出错.

我明白,当我关闭解释器时,不能保证我的对象会被正确销毁(并且它不会打扰我,哎呀,即使是Python作者也认为它没问题).除此之外,我是否通过__del__()清理来玩火?

PS:我最初想在meta上发布一个关于无法复制的错误问题的咆哮,但意识到我不会得到我需要的技术细节.

python destructor

8
推荐指数
1
解决办法
906
查看次数

是否可以定义返回文本字符串的 CAPL 函数?

我在 Vector CANoe 中开发了 CAPL 脚本,我需要定义几个返回文本字符串的函数。在 C 中,我会这样写:

char * ErrorCodeToMsg(int code)
Run Code Online (Sandbox Code Playgroud)

或者

char [] ErrorCodeToMsg(int code)
Run Code Online (Sandbox Code Playgroud)

在 CAPL 中,两个定义都失败并带有parse error. 到目前为止,我想出的唯一可行的解​​决方案是:

variables {
  char retval[256];
}

void ErrorCodeToMsg(int code) {
  char [] msg = "Hello word";
  strncpy(retval, msg, 256);
}
Run Code Online (Sandbox Code Playgroud)

当然这很丑陋,因为每次调用都ErrorCodeToMsg需要两条语句而不是一条语句。有没有更好的办法?

string syntax capl

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

数论算法.该细分市场上的大多数除数

我正在寻找一种有效的算法来解决以下问题.让d(n)表示正除数的数n,其中n为正整数.我们给了一些 1 <= a <= b <= 10^18 ,任务是找到最大值的d[a..b]和(可能我们需要更复杂的算法,这部分)找到最大化值的数字d.

前段时间我在免费访问中找到了以下代码:http://ideone.com/qvxPj

unsigned long long n, res;
int p, primes[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 51, 53, 59, 61, 67, 71};

unsigned long long mul(unsigned long long a, unsigned long long b){
    unsigned long long res = 0;

    while (b){
        if (b & 1LL) res = …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm numbers number-theory

5
推荐指数
1
解决办法
183
查看次数

如何使用REST API登录RQM?

我正在尝试使用其REST API与IBM Rational Quality Manager服务器进行通信.我正在使用RESTClient浏览器插件,当浏览器登录时,一切都按预期工作.为了记录,我的请求看起来像

https://server/qm/service/com.ibm.rqm.integration.service.IIntegrationService/resources/project/testscript/urn:com.ibm.rqm:testscript:42
Run Code Online (Sandbox Code Playgroud)

但是,如果我等待RQM注销,REST API说我需要重新登录才能继续(见下文).我很确定通过API本身可以做到这一点,因为RQM附带了RQMUrlUtility,它接受用户名和密码,并运行与我正在使用的基本相同的REST请求:

java -jar RQMUrlUtility.jar -command GET -user JazzUserID -password JazzPassword -filepath pathtoFile -url REST_URL
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经找到了这个主题,解释了如何使用HTTP基本身份验证登录.根据这个建议,我已经Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=(但不是我的真实密码)添加了请求,但RQM仍然无法登录.我也试着设置User-Agent假值,以及来自发送值JSESSIONIDX-Jazz-CSRF-Prevent所描述的头在这里,但无论这些报头的存在与否,我得到同样的回应:

Status Code: 200 OK
Cache-Control: no-cache="set-cookie, set-cookie2"
Connection: Keep-Alive
Content-Encoding: gzip
Content-Language: en-US
Content-Type: text/html; charset=UTF-8
Date: Tue, 26 Jan 2016 15:48:02 GMT
Expires: Thu, 01 Dec 1994 16:00:00 GMT
Keep-Alive: timeout=10, max=100
Set-Cookie: JazzFormAuth=Form; Path=/qm; Secure
x-com-ibm-team-scenario=ac55f959-c738-4ef0-854d-6e37648edcba%3Bname%3DInitial+Page+Load%3Bextras%3D%2Fqm%2Fauth%2Fauthrequired%2C1453823282026; Path=/
Transfer-Encoding: …
Run Code Online (Sandbox Code Playgroud)

rest http-headers ibm-jazz

5
推荐指数
1
解决办法
2276
查看次数

如何将正则表达式应用于字符串列表?

我想知道是否有办法避免foreach以下代码中的循环:

List<string> lines1 = new List<string>();
List<string> lines2 = new List<string>();
lines1.AddRange(File.ReadAllLines("in.txt"));
foreach(string s in lines1)
    lines2.Add(Regex.Replace(s,"bim(.*)","bom$1");
Run Code Online (Sandbox Code Playgroud)

请注意,循环还需要在处理期间有两个列表.我的目标是将一个正则表达式应用于原位列表中的每个字符串.

c# regex func

0
推荐指数
1
解决办法
260
查看次数