回到我年轻的时候,Unix是新事物,创建一个在你退出时没有被杀的过程是一个挑战.我们使用nohup命令来保护我们的持久进程免受HUP
信号的影响.如果我们不小心,我们的进程会在我们注销时被杀死,甚至关闭我们启动它们的shell.
快进到今天,我发现我很惊讶默认情况恰恰相反.在Ubuntu和Red Hat系统上,我发现我几乎可以在后台放置任何进程,杀死父shell,注销,任何事情都会继续.我看到了与Bash脚本,Python脚本和C程序相同的行为.我从xterm或ssh会话中获得相同的行为.
例如,在xterm或ssh窗口中,键入:
while [ 1 ]; do date; sleep 10; done > /tmp/out &
Run Code Online (Sandbox Code Playgroud)
现在从另一个窗口运行
tail -f /tmp/out
Run Code Online (Sandbox Code Playgroud)
观察它每10秒打印一次日期,然后用Ctrl-D关闭原始父shell.仍在运行.退出并重新登录.仍在运行.
发送HUP
信号,它立即死亡.
我可以使用Python脚本或C程序表现出相同的行为.睡不与无关.例如,这个丑陋的C程序表现相同:
#include <stdio.h>
void main() {
while(1) {
printf("*\n");
fflush(stdout);
int i, j, k = 0;
for(i=0; i < 10000; i++) {
for(j=0; j < 100000; j++) {
k += i * j;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这完全违背了我年轻时的方式.我想我刚才没注意到它改变了吗?那里的历史学家都知道这发生的时间?是否HUP
甚至被用于此目的?
如果确实这是事物的当前状态,我的问题是:当用户注销或断开连接时,如何安排流程死亡?
我有一个黑客,需要注意ppid
(父母的pid)改变,但肯定有一些比这更优雅的东西.
请考虑这个打字稿功能
function button(style: any, func: ()=>void, img: string) {
return (
<button
className="Reader_Button"
style={style}
onClick={func}
>
<img src={img} alt="" />
Back
</button>
);
}
Run Code Online (Sandbox Code Playgroud)
第一个参数的正确类型是什么style
?我觉得它应该像HTMLElementStyle,但我找不到正确的咒语.
对不起,我不太清楚.我想知道用什么类型替换"any" style: any
.打字稿定义处理检查所提供的对象成员的类型.
我在谈论功能的定义,而不是应用程序.
我正在构建一个应该与鼠标或触摸一起使用的界面。由于各种身体问题,我的用户可能难以达到他们想要的目标。
指针事件似乎对此很完美,但我得到了不同的行为。
我想知道指针何时进入和离开目标,以及何时按下。使用鼠标,如果我在目标 T1 上按下鼠标按钮并移动(同时按住按钮)到目标 T2,我会得到指针悬停 T1、指针向下 T1、指针悬停 T1、指针悬停 T2、指针悬停 T2。正是我所期望的。
通过触摸屏,我得到:指针悬停 T1、指针悬停 T1、指针悬停 T1。没有任何迹象表明我从一个目标转移到另一个目标。
如何使触摸行为更像鼠标?
这是在 Linux Ubuntu 上的 Chrome 99 上。
我有一个二进制应用程序,它不能在 Feisty 之后的 Ubuntu 版本上运行。
是否可以构建一个包含 Feisty 的 Docker 镜像并在我的现代系统上运行它?
我已经安装并运行了 nbviewer。我看到它有一个--localfiles
需要文件夹名称的选项。它说:“在 /home/gb/S14/inclass 中提供本地笔记本,这可能存在安全风险”
但我无法弄清楚 URL 格式让它在那里查找文件。代码添加了一个处理程序,/localfile/(.*)
但似乎没有被触发。
任何人都知道如何格式化名称以触发加载本地文件?
我不明白为什么 value_counts 给了我错误的答案。这是一个小例子:
In [81]: d=pd.DataFrame([[0,0],[1,100],[0,100],[2,0],[3,100],[4,100],[4,100],[4,100],[1,100],[3,100]],columns=['key','score'])
In [82]: d
Out[82]:
key score
0 0 0
1 1 100
2 0 100
3 2 0
4 3 100
5 4 100
6 4 100
7 4 100
8 1 100
9 3 100
In [83]: g=d.groupby('key')['score']
In [84]: g.value_counts(bins=[0, 20, 40, 60, 80, 100])
Out[84]:
key score
0 (-0.001, 20.0] 1
(20.0, 40.0] 1
(40.0, 60.0] 0
(60.0, 80.0] 0
(80.0, 100.0] 0
1 (20.0, 40.0] 2
(-0.001, 20.0] 0
(40.0, …
Run Code Online (Sandbox Code Playgroud)