小编Del*_*ted的帖子

多个进程可以使用fopen附加到文件而没有任何并发​​问题吗?

我有一个进程以附加模式打开文件.在这种情况下,它是一个日志文件.示例代码:

int main(int argc, char **argv) {
    FILE *f;
    f = fopen("log.txt", "a");
    fprintf(f, "log entry line");
    fclose(f);
}
Run Code Online (Sandbox Code Playgroud)

两个问题:

  1. 如果我有多个进程附加到同一个文件,每个日志行是否会明显出现,还是可以在进程上下文切换时隔行扫描?
  2. 如果许多进程需要访问该文件,这会写入阻塞,从而导致并发问题吗?

我正在考虑以最简单的方式执行此操作,或者使用zeromq将管道上的日志条目泵送到日志收集器.

我确实考虑过syslog,但我真的不希望任何平台依赖于该软件.

这个btw的默认平台是Linux.

c unix linux fopen

15
推荐指数
3
解决办法
1万
查看次数

在Internet Explorer中的AJAX请求之后,window.location不起作用

我试图通过网页上的链接启动ClickOnce应用程序.链接必须转到服务器才能启动应用程序之前请求事务GUID.代码的工作原理如下:

function clickHandler() {
    $.post('/gettransactionid.aspx', function(tranId) {
        console.log("BEFORE");
        window.location = "/deploy/Company.Domain.Product.application?" + tranId;
        console.log("AFTER");
    });
    return false;
}
Run Code Online (Sandbox Code Playgroud)

这在Firefox中运行得非常好,但在IE中它会导致导航并且不会打开clickonce应用程序.在IE8开发工具的控制台窗口中显示控制台.log BEFORE和AFTER.任何帮助将不胜感激,因为我花了4个小时试图解决它与各种黑客!

我试过了:

  • 将window.location更改为window.open.这只会启动窗口一秒钟,无法启动应用程序.
  • 警告而不是window.location.这什么都不做.
  • 针对IE7,IE8和IE9.
  • 通过将浏览器安全性添加到队列并在根窗口上下文中处理window.location来规避浏览器安全性.
  • 我检查过gettransactionid.aspx返回事务ID.
  • 在Firefox中完成它 - 它运行正常.

在Microsoft的文档中找到答案:

如果您开发了一个使用Active Scripting启动ClickOnce应用程序的自定义Web页面,您可能会发现该应用程序无法在某些计算机上启动.Internet Explorer包含一个名为"自动提示文件下载"的设置,该设置会影响此行为.此选项菜单中的"安全"选项卡上提供了此设置,该设置会影响此行为.它被称为自动提示文件下载,它列在下载类别下面.对于Intranet网页,该属性默认设置为"启用",默认情况下,"Internet网页"设置为"禁用".当此设置设置为"禁用"时,将阻止以编程方式激活ClickOnce应用程序的任何尝试(例如,通过将其URL分配给document.location属性).在这种情况下,用户只能通过用户启动的下载启动应用程序,例如,通过单击设置为应用程序URL的超链接.

更新2011年9月1日:具有讽刺意味的是,由于"自动提示下载"被删除,现在已经完全破坏了IE9.

javascript clickonce jquery internet-explorer window

6
推荐指数
1
解决办法
5801
查看次数

如何确定shell管道中最慢的组件?

我有一个非常漫长而复杂的shell管道,可以获取2.2Gb的数据并进行处理.目前需要45分钟才能完成.管道是捆绑在一起的一些cut,grep,sort,uniq,grep和awk命令.我怀疑是grep部分导致它花了这么多时间,但我无法确认它.

无论如何,从端到端"分析"整个管道以确定哪个组件最慢,如果它是CPU或IO绑定,那么它可以被优化?

我不能在这里发布整个命令,因为它需要发布专有信息,但我怀疑它是以下位用htop检查它:

grep -v ^[0-9]
Run Code Online (Sandbox Code Playgroud)

linux bash grep cut cat

3
推荐指数
1
解决办法
184
查看次数

如何摆脱这段代码中的反射调用?

我正在构建一个简单的"总线"作为概念证明.我不需要任何复杂的东西,但我想知道如何最好地优化下面的代码.我使用Autofac作为容器将命令解析为开放泛型,但实际执行命令当前是通过反射完成的,因为传入的命令无法转换为代码中的具体类型.查看代码 - 用// BEGIN // END标记 - 目前正在使用反射完成.有没有办法在不使用反射的情况下做到这一点?

// IoC wrapper
static class IoC {
    public static object Resolve(Type t) {
        // container gubbins - not relevant to rest of code.
    }
}

// Handler interface
interface IHandles<T> {
    void Handle(T command);
}

// Command interface
interface ICommand {
}

// Bus interface
interface IBus {
    void Publish(ICommand cmd);
}

// Handler implementation
class ConcreteHandlerImpl : IHandles<HelloCommand> {
    public void Handle(HelloCommand cmd) {
        Console.WriteLine("Hello Command executed");
    }
}

// Bus …
Run Code Online (Sandbox Code Playgroud)

c# reflection command autofac bus

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

标签 统计

linux ×2

autofac ×1

bash ×1

bus ×1

c ×1

c# ×1

cat ×1

clickonce ×1

command ×1

cut ×1

fopen ×1

grep ×1

internet-explorer ×1

javascript ×1

jquery ×1

reflection ×1

unix ×1

window ×1