【发布时间】:2011-07-20 15:34:08
【问题描述】:
我的笔记本电脑上安装了 ghc 6.12.3 和 Ubuntu 11.04。
我想要一个函数,它接受一些 shell 命令并在 Haskell 中以超级用户身份执行它们(如 sudo update-manager、sudo iwlist ....)。我知道 System.Process 模块有一些函数,如 createProcess、runInteractiveCommand。但是有一个原始命令或一个 shell 命令,而不是像“sudo update-manager”这样的复合命令。我对这些函数执行“sudo ...”的所有实验都失败了。我用来运行我的 haskell 函数的终端没有响应。
我还查看了 HSH 包。但在我看来,那里导出的函数也不适用于 sudo 命令。
我的猜测是执行“sudo update-manager”之类的命令需要两个进程。一个用于“sudo”,另一个用于“update-manager”。所以我需要调用像“createProcess”这样的函数两次并以某种方式连接它们,以便“update-manager”的第二个进程从“sudo”的第一个进程获得超级用户权限。
提前感谢您的帮助!
【问题讨论】:
-
updateManager是sudo的一个参数。sudo将读取它的所有参数并从中创建一个新的命令行。 -
向我们展示您尝试但不起作用的代码。根据您的描述,它应该有效。
-
这可能不是一个好主意。最好是降低你的水平而不是提高它