我正在编写的程序是在linux中使用FIFO管道进行进程间通信.它充其量只是hacky,但无论我遇到什么问题.
if (!File.Exists(Path.GetTempPath() + "gminput.pipe"))
{
ProcessStartInfo startInfo = new ProcessStartInfo() { FileName = "/usr/bin/mkfifo", Arguments = Path.GetTempPath() + "gminput.pipe", };
Process proc = new Process() { StartInfo = startInfo, };
proc.Start();
proc.WaitForExit();
}
if (!File.Exists(Path.GetTempPath() + "gmoutput.pipe"))
{
ProcessStartInfo startInfo = new ProcessStartInfo() { FileName = "/usr/bin/mkfifo", Arguments = Path.GetTempPath() + "gmoutput.pipe", };
Process proc = new Process() { StartInfo = startInfo, };
proc.Start();
proc.WaitForExit();
}
using (StreamWriter outputPipe = new StreamWriter(Path.GetTempPath() + "gmoutput.pipe"))
using (StreamReader inputPipe = new …Run Code Online (Sandbox Code Playgroud) 我目前正在尝试为我的公司扩展我的PHP驱动的Intranet站点.它本质上是一堆杂项报告和实用程序,我把它们放在一起并链接到内部网络服务器上.每当人们不断想要完成相同的任务时,我会尽可能地编写脚本并将其放在Intranet页面上,以便人们可以在没有我帮助的情况下完成他们的任务.
到目前为止,这种方法运作良好,但有一些实用程序需要仅限于管理人员等.现在,我知道我可以创建一个完整的注册系统来对用户进行身份验证,就像在公共网站上做的那样,但坦率地说,这对所有参与者来说都是一种痛苦.所有用户已经在与apache相同的服务器上拥有一个Linux用户帐户,所以我认为如果我可以创建一个登录表单来验证用户的系统用户名/密码,然后检查他们的组,那会好得多看看他们是否有权做他们想要做的事情(在这种情况下,他们将属于已经存在的"经理"组).如果我能把它拉下来,对每个人来说似乎都是双赢的.用户不必注册和记住/维护/更新另一组凭据,当我想添加或删除用户时,我没有做任何额外的事情.
这是可能吗?如果没有任何预先存在的库来执行此操作,我可以直接执行此操作并让PHP读入并处理/ etc/passwd,/ etc/shadow和/ etc/group吗?
我的问题几乎与单声道/ linux套接字被拒绝相同?但似乎这个问题没有得到适当的回答,所以我仍然被卡住了.
我有一个使用Alchemy WebSockets编写的服务器.我在Windows上运行良好但在将其移植到Linux后我无法使其工作.每次尝试启动套接字服务器时,我都会收到以下错误:
System.Net.Sockets.SocketException: Access denied
at System.Net.Sockets.Socket.Bind (System.Net.EndPoint local_end) [0x00051] in /build/src/mono-2.10.8/mcs/class/System/System.Net.Sockets/Socket.cs:1104
at System.Net.Sockets.TcpListener.Start (Int32 backlog) [0x00022] in /build/src/mono-2.10.8/mcs/class/System/System.Net.Sockets/TcpListener.cs:268
at System.Net.Sockets.TcpListener.Start () [0x00000] in /build/src/mono-2.10.8/mcs/class/System/System.Net.Sockets/TcpListener.cs:243
at Alchemy.TcpServer.Listen (System.Object state) [0x00000] in <filename unknown>:0
Run Code Online (Sandbox Code Playgroud)
我试图绑定到1024以上的端口(在这种情况下特别是12345),这不是问题.我没有运行AppArmor或SELinux或类似的东西.我的系统上没有使用该端口.如果重要,我的用户是"网络"组的成员.如果我用sudo运行它,我的程序将绑定到套接字,但这显然不是一个理想的情况.
这是我用来创建套接字并开始监听的代码:
static public void Start(int port, string host)
{
_server = new WebSocketServer(port, IPAddress.Parse(host));
_server.OnConnect = OnConnected;
_server.OnDisconnect = OnDisconnect;
_server.Start();
}
Run Code Online (Sandbox Code Playgroud)
"12345"作为"端口"传递,"192.168.0.11"(我的本地IP)作为"主机"传递.我也试过IPAddress.Any无济于事.
我目前将Visual Studio 2005用于我的所有个人项目,这意味着我也在使用.NET 2.0框架.可以想象,它已经过时了.我在学校时通过MSDN的学术联盟计划免费获得了这个版本的VS. 现在我已经失学了,遗憾的是我无法访问MSDNAA,因此软件不再免费.
这让我们想到了我的问题.我一直在关注当前.NET版本中的一些新功能.是否可以将VS2005升级为使用.NET 3.5,还是硬连线只能使用2.0?
我正在为我的公司编写一个简单的Web报告系统.我为index.php编写了一个脚本,该脚本获取"reports"目录中的文件列表,并自动创建指向该报告的链接.它工作正常,但我的问题是readdir()不断返回.和..目录指针以及目录的内容.是否有任何方法可以阻止此其他循环通过返回的数组并手动剥离它们?
以下是好奇的相关代码:
//Open the "reports" directory
$reportDir = opendir('reports');
//Loop through each file
while (false !== ($report = readdir($reportDir)))
{
//Convert the filename to a proper title format
$reportTitle = str_replace(array('_', '.php'), array(' ', ''), $report);
$reportTitle = strtolower($reportTitle);
$reportTitle = ucwords($reportTitle);
//Output link
echo "<a href=\"viewreport.php?" . $report . "\">$reportTitle</a><br />";
}
//Close the directory
closedir($reportDir);
Run Code Online (Sandbox Code Playgroud) 我目前正在用PHP撰写报告,偶尔必须显示负货币金额.所述货币金额存储在数据库中,如"-44.00".理想情况下,此数字将在报告中输出为"($ 44.00)".
我知道我可以编写一些半复杂的函数来检测数字是否为负数并手动插入括号,但我想知道是否有一些方便的PHP函数可以在我重新发明轮子之前为我做这个.我已经四处寻找并且没有找到任何似乎做这个确切任务的东西.我知道money_format,但我没有看到任何方法来做负面/括号部分.请记住,无论数字是负数还是正数,代码都必须起作用.
我正在用PHP制作一个简单的WebSocket服务器.我的websocket客户端连接到它很好,但是每当我尝试通过它发送数据时,我都会在JavaScript中抛出"错误:INVALID_STATE_ERR:DOM异常11".
这和其他几个问题似乎描述了我遇到的同样问题,但WebSocket协议已经发生了变化.
我假设问题是我的脚本是不正确的握手,如该问题中所述.我正在使用使用WebSocket版本8的Chromium 15.
这是我的握手功能(部分我的代码部分修改自我在某处发现的过时示例):
function dohandshake($user, $buffer)
{
server_log(1, 'Requesting handshake...');
// Determine which version of the WebSocket protocol the client is using
if(preg_match("/Sec-WebSocket-Version: (.*)\r\n/ ", $buffer, $match))
$version = $match[1];
else
return false;
if($version == 8)
{
// Extract header variables
if(preg_match("/GET (.*) HTTP/" ,$buffer,$match)){ $r=$match[1]; }
if(preg_match("/Host: (.*)\r\n/" ,$buffer,$match)){ $h=$match[1]; }
if(preg_match("/Sec-WebSocket-Origin: (.*)\r\n/",$buffer,$match)){ $o=$match[1]; }
if(preg_match("/Sec-WebSocket-Key: (.*)\r\n/",$buffer,$match)){ $k = $match[1]; }
// Generate our Socket-Accept key based on the IETF specifications
$accept_key = $k . '258EAFA5-E914-47DA-95CA-C5AB0DC85B11'; …Run Code Online (Sandbox Code Playgroud)