我有一个C程序调用 fork()
我有一个python脚本,用于执行C程序
child = subprocess.Popen(command, shell=True, stderr=subprocess.PIPE,stdout=subprocess.PIPE, bufsize=0)
Run Code Online (Sandbox Code Playgroud)
现在,我可以读取标准输出和标准错误用child.stderr.read(1)或child.communicate()...但我的问题是,现在,我怎样才能得到只有从输出分叉过程.这甚至可能吗?我可以从原来的C程序和分支中获取pid 吗?
亲切的问候,非常感谢你:)
法比安
我尝试发出scsi read(10)并将(10)写入 SSD.我使用此示例代码作为参考/基本代码.
这是我的scsi阅读:
#define READ_REPLY_LEN 32
#define READ_CMDLEN 10
void scsi_read()
{
unsigned char Readbuffer[ SCSI_OFF + READ_REPLY_LEN ];
unsigned char cmdblk [ READ_CMDLEN ] =
{ 0x28, /* command */
0, /* lun/reserved */
0, /* lba */
0, /* lba */
0, /* lba */
0, /* lba */
0, /* reserved */
0, /* transfer length */
READ_REPLY_LEN, /* transfer length */
0 };/* reserved/flag/link */
memset(Readbuffer,0,sizeof(Readbuffer));
memcpy( cmd + SCSI_OFF, cmdblk, …Run Code Online (Sandbox Code Playgroud) 这是我在stackoverflow上关于这个主题的第三个问题.是完整的,这些都是其他问题AES隐窝,JS和PyCrypto和匹配AES德/加密在Python和JavaScript.不幸的是,我的最后一次尝试得到了原始问题的两个downvots.问题是,即使我不知道我真正的问题是什么.我只是四处寻找我正在寻找的真正问题.通过评论中的反馈,并阅读一些其他信息,我更新了我的问题.我认为,我正在挖掘正确的问题.但是我的问题在我的更新后没有得到任何更多的观点.所以我真的希望,这个问题现在更清晰易懂 - 即使我知道我现在的问题是什么:D
谢谢大家为这个很酷的社区制作堆栈流 - 我经常在这里找到解决问题的方法.请继续对不良问题提供反馈,以便对其进行改进和更新,从而增加这个庞大的知识和解决方案数据库.并随意纠正我的英语语法和拼写.
我有一个加密的字符串,我可以使用这个AES 256 CTR模式的Javascript实现解密
password = "myPassphrase"
ciphertext = "bQJdJ1F2Y0+uILADqEv+/SCDV1jAb7jwUBWk"
origtext = Aes.Ctr.decrypt(ciphertext, password, 256);
alert(origtext)
Run Code Online (Sandbox Code Playgroud)
这会This is a test Text弹出解密我的字符串和警告框.
现在我想用python和PyCrypto解密这个字符串
password = 'myPassphrase'
ciphertext = "bQJdJ1F2Y0+uILADqEv+/SCDV1jAb7jwUBWk"
ctr = Counter.new(nbits=128)
encryptor = AES.new(key, AES.MODE_CTR, counter=ctr)
origtext = encryptor.decrypt(base64.b64decode(ciphertext))
print origtext
Run Code Online (Sandbox Code Playgroud)
此代码无法运行.我得到了ValueError: AES key must be either 16, 24, or 32 bytes long.当我认识到,我必须在PyCrypto中做更多事情然后只是调用一个解密方法,我开始调查结束尝试弄清楚我必须做什么.
我首先想到的基本事情是:
我有一个Debian的Linux 2.6内核,我试着去了解如何与堆工程/行为malloc()和free().我试图搜索malloc()和free()算法和堆结构,但我找不到任何有用的东西.不幸的是,我知道得少谈Linux和记忆是如何工作的,了解的源代码free()和malloc().
这是一个示例代码:
int main(int argc, char **argv)
{
char *a, *b, *c;
a = malloc(32);
b = malloc(32);
c = malloc(32);
strcpy(a, argv[1]);
strcpy(b, argv[2]);
strcpy(c, argv[3]);
free(c);
free(b);
free(a);
}
Run Code Online (Sandbox Code Playgroud)
用gdb,run AAAA BBBB CCCC我可以检查堆.这是在strcpys之前但之前的状态frees:
(gdb) x/32x 0x804c000
0x804c000: 0x00000000 0x00000029 0x41414141 0x00000000
0x804c010: 0x00000000 0x00000000 0x00000000 0x00000000
0x804c020: 0x00000000 0x00000000 0x00000000 0x00000029
0x804c030: 0x42424242 0x00000000 0x00000000 0x00000000
0x804c040: …Run Code Online (Sandbox Code Playgroud) 我想read()用 SATA HDD制作一个基本的/dev/sdd。Awrite()似乎有效。也read()可以write()在没有 Flag 的情况下工作O_DIRECT。我读过,它必须与块大小对齐。所以我用它来获取块大小:
root$ blockdev --getsize /dev/sdd
488397168
root$ blockdev --getsize64 /dev/sdd
250059350016
root$ python -c "print 250059350016.0/488397168"
512.0
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我有根。HDD 通过 PCIe SATA 卡连接,并向lspci -vv我显示它使用基本的 ahci ( drivers/ata/ahci.c) 驱动程序。我在 64 位 Power Architecture 上使用 3.2.0 Linux 内核。
这是我的代码:
root$ blockdev --getsize /dev/sdd
488397168
root$ blockdev --getsize64 /dev/sdd
250059350016
root$ python -c "print 250059350016.0/488397168"
512.0
Run Code Online (Sandbox Code Playgroud)
输出是:
tmp_buffer is at: 1cc80010 % 512 = 16 …Run Code Online (Sandbox Code Playgroud) linux ×3
python ×2
aes ×1
block-device ×1
c ×1
encryption ×1
fork ×1
gdb ×1
hard-drive ×1
heap ×1
io ×1
javascript ×1
pycrypto ×1
scsi ×1
stderr ×1
stdout ×1
subprocess ×1